As regards the connection of computers, in many applications of the Internet, for example only and not by limitation, it has become apparent that traditional client-server models of data distribution are unsuitable for scaling to the massive demands intermittently experienced by servers, for example the “Slashdot” effect, where a server on the Internet is exposed to massive demand via its listing on a major public portal and fails to concurrently serve the overwhelming number of visitors.
This problem has given rise to “cooperative” networks, where the individual consumers of any data contribute the entirety of that data back to other users, thus saving the original source of the data from having to send it to all consumers. These applications have been proven to scale well on today's Internet, but these prior art “solutions” share several common caveats.
The prevalence of Network Address Translation (NAT) routers, which allow outgoing connections but deny incoming connections, offer a large measure of protection and convenience for the computers isolated behind them but they break many cooperative networking efforts. That is, since any consumer wishing to connect to a computer that sits behind a NAT router has no direct way of connecting to that computer, the presence of one or more NAT routers between two computers on the Internet can result in their inability to directly communicate.
Prior art solutions to this have involved the use of intermediary computers which are not behind a NAT router. Two computers wishing to communicate connect to this intermediary computer and use it as a message relay between them. This scenario, however, actually utilizes twice the overall bandwidth that direct communication would entail, and thus suffers from severe performance limitations.
Continuing by way of example only, most NAT routers provide functionality to forward certain ports to specific internal computers, but configuring is difficult to do and often outside the ability of a user. All prior art technologies of which Applicant is aware, such as UPnP, are overly complex and are rarely executed properly, such that currently the user is faced with a vast array of incompatible devices with dubious supportability.
Since the ability to directly communicate between nodes is beneficial to any distributed application and to some point to point applications, there is a need in the art for ways to deliver data between such points without an intermediary system as now required. Thus, a system and method for directly connecting two systems, each behind a respective NAT router or the like, is one objective of the present invention.
A related issue arises once two systems are effectively connected, even those systems located behind NAT routers, and that issue is how to deliver data in a manner that reduces the network load on the data source. Thus, a system and method for delivering streams of data to multiple users that reduces the source bandwidth required by prior art solutions is another objective of the present invention.